// Fluxions 3D Engine
// viperfish/application.hpp
// Copyright (C) 2000-2011 Jonathan Metzgar
// 
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License along
// with this program; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

#ifndef VIPERFISH_APPLICATION_HPP
#define VIPERFISH_APPLICATION_HPP

namespace Viperfish
{
	class Application
	{
	public:
		Application() {}
		virtual ~Application() {}
		
		virtual void OnInit() {}
		virtual void OnKill() {}

		virtual void OnUpdate(double deltaTime) {}
		virtual void OnTimer(int timerId, int value, double timerInterval) {}
		virtual void OnRender() {}
		virtual void OnRenderOverlay() {}

		virtual void OnStart() {}
		virtual void OnStop() {}
		virtual void OnPause() {}
		virtual void OnResume() {}

		virtual void OnKeyUp(int key) {}
		virtual void OnKeyDown(int key) {}
		virtual void OnSpecialKeyDown(int key) {}
		virtual void OnSpecialKeyUp(int key) {}
		virtual void OnMouseButtonDown(int button) {}
		virtual void OnMouseButtonUp(int button) {}
		virtual void OnMouseMotion(int x, int y, int xrel, int yrel, int buttons) {}
		virtual void OnJoyAxis(int axis, float value, float delta) {}
		virtual void OnJoyHat(int direction) {}
		virtual void OnJoyBall(int ball, float value) {}
		virtual void OnJoyButtonDown(int button) {}
		virtual void OnJoyButtonUp(int button) {}
	};
}

#endif
